package com.feeyo.prophet.pojo.action.flight;

import com.alibaba.fastjson.annotation.JSONField;
import com.feeyo.prophet.config.ChineseName;
import lombok.Data;

import java.lang.reflect.Field;

/**
 * todo 重要字段过多,先屏蔽掉一些. 后面如果有要求在打开，不要删除
 *
 */

@Data
public class FlightDynamicResp {
    /**
     * 航班号
     */
    @JSONField
    @ChineseName("航班号")
    private String fnum;

    /**
     * 出发三字码
     */
    @JSONField
    @ChineseName("出发三字码")
    private String forg;

    /**
     * 到达三字码
     */
    @JSONField
    @ChineseName("到达三字码")
    private String fdst;

    /**
     * 计划出发时间, UTC+8时间
     */
    @JSONField
    @ChineseName("计划出发时间")
    private String scheduledDeptime;

    /**
     * 计划到达时间, UTC+8时间
     */
    @JSONField
    @ChineseName("计划到达时间")
    private String scheduledArrtime;

    /**
     * 实际出发时间
     */
    @JSONField
    @ChineseName("实际出发时间")
    private String actualDeptime;

    /**
     * 实际到达时间
     */
    @JSONField
    @ChineseName("实际到达时间")
    private String actualArrtime;

    /**
     * 飞机状态: 0: 计划，1: 起飞，2: 到达，3: 取消，4: 延误，5: 备降
     */
    @JSONField
    @ChineseName("飞机状态")
    private String flightStatusCode;

//    /**
//     * 预计登机开始时间
//     */
//    @JSONField
//    private String boadingReadyTime;
//
//    /**
//     * 预计登机结束时间
//     */
//    @JSONField
//    private String boadingEndReadyTime;

    /**
     * 值机截止时间
     */
    @JSONField
    @ChineseName("值机截止时间")
    private String latestCheckInDeadline;
//    /**
//     * 推入时间
//     */
//    @JSONField
//    private String ingatetime;
//    /**
//     * 推出时间
//     */
//    @JSONField
//    private String outgatetime;
//    /**
//     * 预计推入时间
//     */
//    @JSONField
//    private String estimatedIntime;
//    /**
//     * 关舱门时间
//     */
//    @JSONField
//    private String closeDoorTime;
//    /**
//     * 出发地时区
//     */
//    @JSONField
//    private String orgTimezone;
//    /**
//     * 到达地时区
//     */
//    @JSONField
//    private String dstTimezone;
    /**
     * 出发门
     */
    @JSONField
    @ChineseName("出发门")
    private String tdoor;

    /**
     * 登机口
     */
    @JSONField
    @ChineseName("登机口")
    private String gate;

    /**
     * 出发航站楼
     */
    @JSONField
    @ChineseName("出发航站楼")
    private String departureTerminal;
//    /**
//     * 到达航站楼
//     */
//    @JSONField
//    private String arrivalTerminal;

    /**
     * 值机柜台号
     */
    @JSONField
    @ChineseName("值机柜台号")
    private String checkinDeskRange;

    /**
     * 飞机编号
     */
    @JSONField
    @ChineseName("飞机编号")
    private String aircraftNumber;

    /**
     * 机型
     */
    @JSONField
    @ChineseName("机型")
    private String ftype;

    /**
     * 行李转盘号
     */
    @JSONField
    @ChineseName("行李转盘号")
    private String baggageReclaimCarousel;
//    /**
//     * 乘机/登机状态
//     */
//    @JSONField
//    private String boardStatusCode;
//    /**
//     * 航班种类
//     */
//    @JSONField
//    private Integer fcategory;
//
    /**
     * 航班服务类型
     */
    @JSONField
    @ChineseName("航班服务类型")
    private String fservice;

//    /**
//     * 共享航班号 共享航班号
//     */
//    @JSONField
//    private String shareFlight;
//
//    /**
//     * 是否共享 0:否, 1:是  fcodeshared
//     */
//    @JSONField
//    private String shareExecuteFlag;

//    /**
//     * 经停机场标志位
//     */
//    @JSONField
//    private String portsOfCall;

//    /**
//     * 虚拟航班
//     */
//    @JSONField
//    private String virtualFlight;

//    /**
//     * 出发停机位
//     */
//    @JSONField
//    private String depStandPosition;

    /**
     * 航司
     */
    @JSONField
    @ChineseName("航司")
    private String airline;

    /**
     * 餐食标志
     */
    @JSONField
    @ChineseName("餐食标志")
    private String food;
//    /**
//     * 飞机排队
//     */
//    @JSONField
//    private String flightwaitdata;
    /**
     * 当日准点率
     */
    @JSONField
    @ChineseName("当日准点率")
    private String todayPunctRate;
//    /**
//     * 前序航班
//     */
//    @JSONField
//    private String qxfno;
//    /**
//     * 备降标志
//     */
//    @JSONField
//    private String forceLandingFlag;
//    /**
//     * 安检口到登机口时间
//     */
//    @JSONField
//    private String routetime;

    /**
     * 飞机状态中文
     */
    @JSONField
    @ChineseName("飞机状态中文")
    private String flightStatus;

    /**
     * 航线距离
     */
    @JSONField
    @ChineseName("航线距离")
    private String airlineDistance;

    /**
     * 飞行时间: 单位秒
     */
    @JSONField
    @ChineseName("飞行时间")
    private String flytime;
//    /**
//     * 备降航班
//     */
//    @JSONField
//    private Object forceLandingInfo;
//
//    /**
//     * wifi标志
//     */
//    @JSONField
//    private String wifi;

//    /**
//     * 前序航班排序
//     */
//    @JSONField
//    private String qxsort2;

//    /**
//     * 客舱布局
//     */
//    @JSONField
//    private String sCNF;
    /**
     * 可利用座位数
     */
    @JSONField
    @ChineseName("可利用座位数")
    private String sCAP;

    /**
     * 已售座位数
     */
    @JSONField
    @ChineseName("已售座位数")
    private String sR;
//    /**
//     * 已值机座位数
//     */
//    @JSONField
//    private String sC;
    /**
     * 行李数/重量
     */
    @JSONField
    @ChineseName("行李数/重量")
    private String sB;
//    /**
//     * 儿童数
//     */
//    @JSONField
//    private String sCHD;

//    /**
//     * 交通方式
//     */
//    @JSONField
//    private String routetype;

    /**
     * 电话号码
     */
    @JSONField
    @ChineseName("电话号码")
    private String telephone;

//    /**
//     * 是否虚拟航班
//     */
//    @JSONField
//    private String virtualFlag;
//    /**
//     * 高端舱入口门
//     */
//    @JSONField
//    private String fhighdoor;



//    /**
//     * 机龄
//     */
//    @JSONField
//    private String fage;

//    /**
//     * 实际起飞时间（UTC时间）
//     */
//    @JSONField
//    private String utcActualDeptime;
//
//    /**
//     * 实际到达时间（UTC时间）
//     */
//    @JSONField
//    private String utcActualArrtime;


//    /**
//     * 预计推出时间
//     */
//    private String estimatedOuttime;
//    /**
//     * 取消时间
//     */
//    private String cancelUptime;
//    /**
//     * 计算起飞时间
//     */
//    private String ctot;
//    /**
//     * 盘旋时间
//     */
//    private String spiralTime;


    /**
     * 到达口
     */
//    private String reachExit;
//
//    /**
//     * 到达停机位
//     */
//    private String arrStandPosition;
//
//    /**
//     * 出港靠桥方式
//     */
//    private String depBridge;
//
//    /**
//     * 进港靠桥方式
//     */
//    private String arrBridge;
//    /**
//     * 出发地机场跑道
//     */
//    private String orgRunway;
//    /**
//     * 目的地机场跑道
//     */
//    private String dstRunway;
//    /**
//     * 延误原因
//     */
//    private String reason;
    /**
     * 接机区域
     */
//    private String pickUpArea;

//    /**
//     * 最快出到达口时间(靠桥)
//     */
//    private String fastestExitDuration;
//    /**
//     * 最慢出到达口时间(靠桥)
//     */
//    private String slowestExitDuration;
//    /**
//     * 最快出到达口时间(远机位)
//     */
//    private String fastestExitTime;
//    /**
//     * 最慢出到达口时间(远机位)
//     */
//    private String slowestExitTime;
//
//    /**
//     * 换乘飞机指数
//     */
//    private String changeflight;
//
//    /**
//     * 绿字时间
//     */
//    private String dexpected0;
//    /**
//     * 红字时间
//     */
//    private String dexpected2;
//    /**
//     * 预计起飞时间
//     */
//    private String vzEstimatedDeptime;
//    /**
//     * 预计到达时间
//     */
//    private String vzEstimatedArrtime;

    /**
     * 航司官方预计起飞时间
     */
//    private String officialEstimatedDeptime;

//    /**
//     * 内部原因
//     */
//    private String nbReason;
//
//    /**
//     * 计算的预计到达时间
//     */
//    private String adsbEta;
    /**
     * 前序航班状态
     */
//    private String qstatus;

    /**
     * 获取字段的中文注释
     * @param field 字段
     * @return 中文注释
     */
    public static String getFieldComment(Field field) {
        if (field.isAnnotationPresent(ChineseName.class)) {
            ChineseName chineseName = field.getAnnotation(ChineseName.class);
            return chineseName.value();
        }
        return null;
    }
}
